#include"BlockQueue.hpp"
using namespace BlockQueueModule;
void* productor_t(void* args)
{
    BlockQueue<int>* bq =static_cast<BlockQueue<int>*>(args);
    int data=10;
    while(true) 
    {
        
        bq->Equeue(data);
        std::cout<<"生产了一个数据-"<<data<<std::endl;
        data++;
    }

}
void* cosumer_t(void* args)
{
    BlockQueue<int>* bq =static_cast<BlockQueue<int>*>(args);
    int data=0;
    while(true)
    {

        sleep(2);//直接让生产者生产满了
        bq->Pop(&data);
        std::cout<<"花费了一个数据-"<<data<<std::endl;
    }
}
int main()
{
    BlockQueue<int>* tmp =new BlockQueue<int>(5);
    pthread_t consumer ,productor;  //得有一个消费者和生产者的线程


    //生产者和消费者共用一个阻塞队列 一个临界资源
    pthread_create(&consumer,nullptr,cosumer_t,tmp);
    pthread_create(&productor,nullptr,productor_t,tmp);

    pthread_join(productor,nullptr);
    pthread_join(consumer,nullptr);

    delete tmp;

}